package com.zeyun.EasyOnlineShareCloud.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zeyun.EasyOnlineShareCloud.dao.entity.FileDO;
import com.zeyun.EasyOnlineShareCloud.dto.resp.FileUploadResp;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 文件服务接口
 */
public interface FileService extends IService<FileDO> {
	/**
	 * 上传文件
	 *
	 * @param file          文件
	 * @param subPath       子路径
	 * @param specialPrefix 特殊前缀
	 * @param IP            IP
	 * @return 文件上传响应
	 */
	FileUploadResp upload(MultipartFile file, String subPath, String specialPrefix, String IP);

	/**
	 * 下载文件
	 *
	 * @param accessCode 访问码
	 * @param fileId     文件id
	 * @param IP         IP
	 * @return 包含文件资源和元数据的Map
	 */
	Map<String, Object> download(String accessCode, String fileId, String IP);

	/**
	 * 验证访问码是否存在
	 *
	 * @param accessCode 访问码
	 */
	void validAccessCode(String accessCode);
	
	/**
	 * 获取压缩包内容
	 * @param accessCode 访问码
	 * @param fileId 文件ID
	 * @return 压缩包内容列表
	 */
	List<Map<String, Object>> getArchiveContents(String accessCode, String fileId);
	
	/**
	 * 预览文件（不计入下载次数）
	 *
	 * @param accessCode 访问码
	 * @param fileId     文件id
	 * @param IP         IP
	 * @return 包含文件资源和元数据的Map
	 */
	Map<String, Object> preview(String accessCode, String fileId, String IP);
}